Enviado em 16/06/2010 - 16:11h
Olá, eu queria pedir ajuda dos programadores mais experientes com um exercício de C.#include <stdio.h>
#include <stdlib.h>
#include <string.h> // a função strupr necessita desta biblioteca
// declarando os registros
struct{
char sexo[1], corOlhos[1];
float altura;
int idade;
} pessoas[2];
int main(){
// declarando as variáveis
int i, k, maiorIdade, qtdMulheres, qtdHomens;
float somaIdades;
char handler[1];
// inserindo os dados no registro
for(i=0;i<2;i++){
printf("\nQual o sexo da %da. pessoa? M/F \n", i+1);
scanf("%s", handler);
// Este loop converte o que handler recebe para maiúsculo.
for(k=0;handler[k]!=''; k++){
handler[k] = toupper(handler[k]);
}
// Fazendo a verificação do que a variável handler recebeu. Se passar na verificação, a variável pessoas[i].sexo recebe o valor de handler.
// Se não passar na verificação, exibe mensagem e retorna ao início do loop
if((strcmp(handler,"M")== 0) || (strcmp(handler, "F")==0)){
for(k=0;handler[k]!=''; k++)
pessoas[i].sexo[k] = handler[k];
} else {
printf("\nSexo inválido, digite apenas M ou F !");
i--;
continue;
}
printf("\nDigite a altura: ");
scanf("%f", &pessoas[i].altura);
printf("\nDigite a idade: ");
scanf("%d", &pessoas[i].idade);
printf("\nQual a cor dos olhos? C(castanhos)/A(azuis)/V(verdes) : ");
scanf("%s", handler);
// Passando o que foi digitado para cor dos olhos para MAIÚSCULO e fazendo a verificação do que foi digitado.
for(k=0; handler[k]!=''; k++)
handler[k] = toupper(handler[k]);
// Verificando se o valor digitado para cor dos olhos é igual a C, A ou V
if((strcmp(handler,"C")==0) || (strcmp(handler,"A")==0) || (strcmp(handler,"V")==0)) {
for(k=0;handler[k]!=''; k++)
pessoas[i].corOlhos[k] = handler[k];
} else {
printf("\n\nA cor dos olhos digitada é inválida! Utilize: C(castanhos), A(azuis) ou V(verdes!\n");
i--;
continue;
}
}
// verificando o registro
somaIdades = 0;
maiorIdade = 0;
for(i=1;i<2;i++){
// soma a idade das pessoas de olhos castanhos e altura superior a 1,60 m
// IMPORTANTE : para fazer a comparação entre 2 STRING's utiliza-se o comando STRCMP( string1, string2) => retorna ZERO se forem iguais
if((strcmp(pessoas[i].corOlhos,"C")==0) && (pessoas[i].altura>1.60)) {
somaIdades += pessoas[i].idade;
}
// verifica qual a maior idade entre as pessoas cadastradas no registro
if(pessoas[i].idade> pessoas[maiorIdade].idade)
maiorIdade = i;
}
qtdMulheres = 0;
qtdHomens = 0;
// é nesta parte aqui embaixo que estou com problemas V
for(i=0;i<2;i++){
// verifica a quantidade de mulheres com idade entre 20 e 45 anos(inclusive). Se a verificação anterior retornar 0(zero), verifica a quantidade de mulheres de olhos verdes e altura //inferior a 1.70 m e salva essa quantidade em uma variável
if(strcmp(pessoas[i].sexo,"F")==0){
// #rofl, essa verificação aqui tá pequena hein :P
if((pessoas[i].idade>20) && (pessoas[i].idade<=45))
qtdMulheres++;
if((strcmp(pessoas[i].corOlhos,"V")==0) && (pessoas[i].altura<1.70))
qtdMulheres++;
}
// calcula a quantidade de homens existentes no cadastro
if(strcmp(pessoas[i].sexo,"M")==0)
qtdHomens++;
}
// exibindo os resultados das verificações
printf("\nA media das idades de pessoas de olhos castanhos e altura superior a 1.60 m é : %3.2f", somaIdades/2);
printf("\nA maior idade das pessoas cadastradas é : %d", pessoas[maiorIdade].idade);
printf("\nA quantidade de mulheres de idade entre 20 e 45 anos(inclusive) ou que tenham olhos verdes e altura inferior a 1.70 m é : %d", qtdMulheres);
printf("\nA quantidade de homens é: %d\n", qtdHomens);
return 0;
}
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
DEBIAN 9 NÃO INICIA IMAGEN NA TV (0)
Google Chrome não para de escrever no disco (9)
Windows XP rodando no Linux (5)
Som saiu,sumio,nao funciona, apos atualizacao do linux mint por 22 (1)
Erro ao iniciar Ubuntu 24.04.1 LTS - Management Owner Key - MoK (3)